#ifndef PRINTMODULE_H
#define PRINTMODULE_H

#include <windows.h>

#define  OUTPUT_REGION_SIZE 16

class OutputStorage
{
private:
    int start;
    int next;
    int row;
    int col;
    char outputBuffer[100][100];
public:
   OutputStorage(int row, int col);
   void addOneStr(const char *str, const int isCmd);
   void updataInputRegion(COORD &position,int isEnd);
   void updataOutputRegion(COORD &position);
   void cmdParse(int &suspend, int &speed, const char *cmd, HANDLE &h);
   void print();
};

////////////////////////////////////////////////////////////////////////////////
//////////////////////////                     /////////////////////////////////
//////////////////////////    其他输出控制模块  /////////////////////////////////
//////////////////////////                     /////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

/*
 * 初始化
 */
void initConsole(); // 初始化缓冲区

/*
 * 用户输入
 */ 
void storeCmd(char *dst, const char *src); // 暂存用户输入

/*
 * 光标控制
 */
void hideCursor();           // 隐藏光标
void showCursor();           // 显示光标
void setCurInputPosition();  // 设置输入光标的位置

/*
 * 控制输出
 */
void printPrompt();  // 打印命令提示符
void visual2console(int data, char ch); // 生产者、消费者操作可视化到控制台

/*
 * 帮助信息
 */
void helpInfo();

void clearOutputRegion(COORD &position);

#endif